package config

import "github.com/samber/lo"

type (
	B表字段结构 struct {
		// 字段名
		M名称 string
	}

	B表结构 struct {
		// 表名
		M名称   string
		Z字段列表 []B表字段结构
	}
)

type S数据库元信息 struct {
	B表映射 map[string]B表结构
}

func X新建数据库元信息(表列表 []B表结构) *S数据库元信息 {
	实例 := &S数据库元信息{}
	实例.B表映射 = make(map[string]B表结构)

	for _, 表 := range 表列表 {
		实例.B表映射[表.M名称] = 表
	}

	return 实例
}

func (元信息 *S数据库元信息) H获取表字段列表(表名 string) (字段列表 []string) {
	for _, 字段 := range 元信息.B表映射[表名].Z字段列表 {
		字段列表 = append(字段列表, 字段.M名称)
	}
	return
}

func (元信息 *S数据库元信息) H获取表名称列表() []string {
	return lo.Keys(元信息.B表映射)
}
